package fun.werfamily.wf.order.core.domain.dto.result;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * wf_order
 * @author 
 */
@Data
@ApiModel("订单实体")
public class OrderDTO implements Serializable {

    @ApiModelProperty("预订单号")
    private String preOrderNo;

    @ApiModelProperty("订单号")
    private String orderNo;

    @ApiModelProperty("用户编码")
    private String userCode;

    @ApiModelProperty("账号")
    private String userName;

    @ApiModelProperty("渠道编码，ZY001-自营")
    private String channelCode;

    @ApiModelProperty("下单来源：cart-购物车，buy-立即购买")
    private String origin;

    @ApiModelProperty("订单状态:0.待付款，1.交易关闭(用户)，2.交易关闭(系统，)3.待发货，4.待收货，5.交易完成，6.退款中，7.已退款")
    private Integer orderStatus;

    @ApiModelProperty("支付状态：0.未支付，1.付款中，2.支付失败，3.已支付")
    private Integer payStatus;

    @ApiModelProperty("商品总金额")
    private BigDecimal goodsAmount;

    @ApiModelProperty("订单商品明细")
    private List<OrderGoodsDTO> orderGoodsDTOList;

    @ApiModelProperty("订单优惠金额")
    private BigDecimal orderDiscountAmount;

    @ApiModelProperty("应付款金额")
    private BigDecimal orderAmount;

    @ApiModelProperty("订单实际支付金额")
    private BigDecimal orderRealPayAmount;

    @ApiModelProperty("订单商品总数量")
    private Integer goodsNum;

    @ApiModelProperty("运费")
    private BigDecimal shippingFee = BigDecimal.ZERO;

    @ApiModelProperty("支付方式: AliPay-支付宝，WechatPay-微信支付，UnionPay-银联")
    private String payType;

    @ApiModelProperty("收货地址id")
    private Long addressId;

    @ApiModelProperty("收货人的姓名")
    private String consignee;

    @ApiModelProperty("收货人的手机")
    private String mobile;

    @ApiModelProperty("收货人的省份")
    private String provinceName;

    @ApiModelProperty("收货人的城市")
    private String cityName;

    @ApiModelProperty("收货人的地区")
    private String areaName;

    @ApiModelProperty("收货人的详细地址")
    private String detailAddress;

    @ApiModelProperty("地址标签，如家里，公司等")
    private String addressTag;

    @ApiModelProperty("订单备注")
    private String remark;

    @ApiModelProperty("订单确认时间")
    private Date confirmTime;

    @ApiModelProperty("支付时间")
    private Date payTime;

    @ApiModelProperty("订单生成时间")
    private Date createTime;

    @ApiModelProperty("支付宝表单参数")
    private String form;

    @ApiModelProperty("支付单号")
    private String payNo;
}